package com.eastedu.client.file.model;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 袁松明
 */
@Data
public class FileUpdateResponse {

    /**
     * 文件ID
     */
    private String id;

    /**
     * 文件大小
     */
    private Long size;

    /**
     * 文件MD5
     */
    private String md5;

    /**
     * 文件扩展名
     */
    private String extension;

    /**
     * 文件名称
     */
    private String fileName;

    /**
     * 文件状态
     */
    private Integer state;

    /**
     * 云服务提供商
     */
    private String provider;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 文件地址, download - 下载地址, preview - 静态预览地址, cdn - cdn加速地址
     */
    private Map<String, String> urls = new HashMap<>();


    /**
     * 文件guid
     */
    private List<Guid> guid;

    /**
     * 转码信息，替换原来的VoidFiles
     */
    private List<Transcode> transcode;

    @Data
    public static class Guid {

        /**
         * guid
         */
        private String guid;

        /**
         * 文件名称
         */
        private String fileName;

        /**
         * 老文件ID
         */
        private String oldFileId;
    }

    @Data
    public static class Transcode {
        /**
         * 文件预览ID
         */
        private String id;

        /**
         * 文件ID
         */
        @Schema(description = "")
        private String fileId;

        /**
         * 清晰度模板
         */
        private String definition;

        /**
         * 播放地址，替换原来的PlayAddres
         */
        private String url;

        /**
         * 封面地址
         */
        private String cover;

        /**
         * 记录创建时间
         */
        private Date createTime;

        /**
         * 记录修改时间
         */
        private Date updateTime;

        /**
         * 转码状态：0,转码中，1转码成功，2转码失败
         */
        private Integer status;

        /**
         * 视频码率
         */
        private Long bitrate;

        /**
         * 视频时长
         */
        private Long duration;

        /**
         * 分辨率
         */
        private Integer height;

        /**
         * 分辨率
         */
        private Integer width;

        /**
         * 云文件ID
         */
        private String playId;

        /**
         * 云服务提供商
         */
        private String provider;
    }
}
